# Implementation details of SingleMachineFactory.

package(
    default_visibility = ["//visibility:public"],
    licenses = ["notice"],
)

cc_library(
    name = "single_machine_factory_impl",
    srcs = ["single_machine_factory_impl.cc"],
    hdrs = ["single_machine_factory_impl.h"],
    tags = ["local"],
    deps = [
        "//scann/base:reordering_helper_factory",
        "//scann/base:single_machine_base",
        "//scann/base:single_machine_factory_options",
        "//scann/data_format:dataset",
        "//scann/distance_measures",
        "//scann/oss_wrappers:scann_status",
        "//scann/proto:crowding_cc_proto",
        "//scann/proto:partitioning_cc_proto",
        "//scann/proto:scann_cc_proto",
        "//scann/utils:common",
        "//scann/utils:factory_helpers",
        "//scann/utils:hash_leaf_helpers",
        "//scann/utils:scann_config_utils",
        "//scann/utils:single_machine_autopilot",
        "//scann/utils/fixed_point:pre_quantized_fixed_point",
    ],
)

cc_library(
    name = "tree_x_hybrid_factory",
    srcs = ["tree_x_hybrid_factory.cc"],
    hdrs = ["tree_x_hybrid_factory.h"],
    tags = ["local"],
    deps = [
        ":single_machine_factory_impl",
        "//scann/base:single_machine_base",
        "//scann/base:single_machine_factory_options",
        "//scann/brute_force:scalar_quantized_brute_force",
        "//scann/data_format:dataset",
        "//scann/distance_measures",
        "//scann/distance_measures:distance_measure_base",
        "//scann/hashes/asymmetric_hashing2:searcher",
        "//scann/hashes/asymmetric_hashing2:training_model",
        "//scann/hashes/asymmetric_hashing2:training_options",
        "//scann/oss_wrappers:scann_aligned_malloc",
        "//scann/oss_wrappers:scann_down_cast",
        "//scann/oss_wrappers:scann_status",
        "//scann/oss_wrappers:tf_dependency",
        "//scann/partitioning:kmeans_tree_like_partitioner",
        "//scann/partitioning:kmeans_tree_partitioner",
        "//scann/partitioning:partitioner_base",
        "//scann/partitioning:partitioner_factory",
        "//scann/partitioning:tree_brute_force_second_level_wrapper",
        "//scann/proto:brute_force_cc_proto",
        "//scann/proto:exact_reordering_cc_proto",
        "//scann/proto:partitioning_cc_proto",
        "//scann/proto:scann_cc_proto",
        "//scann/tree_x_hybrid:tree_ah_hybrid_residual",
        "//scann/tree_x_hybrid:tree_x_hybrid_smmd",
        "//scann/utils:common",
        "//scann/utils:factory_helpers",
        "//scann/utils:hash_leaf_helpers",
        "//scann/utils:scalar_quantization_helpers",
        "//scann/utils:types",
        "//scann/utils/fixed_point:pre_quantized_fixed_point",
        "@com_google_absl//absl/base",
        "@com_google_absl//absl/flags:flag",
        "@com_google_absl//absl/log",
        "@com_google_absl//absl/strings",
    ],
)
